home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / mint / l_1199 / 1146 < prev    next >
Encoding:
Internet Message Format  |  1994-08-27  |  33.9 KB

  1. From: Robert.Wilhelm@physik.tu-muenchen.de
  2. Subject: 68000 only version of Mint
  3. Date: Sat, 5 Mar 1994 02:04:25 +0100 (MET)
  4.  
  5. Hi,
  6.  
  7. I have made a few changes to the mint 1.10 sources to get a new
  8. flavour of Mint: a version for 68000 only. The result is nearly
  9. 10kB shorter and perhabs a little faster than vanilla mint.prg.
  10.  
  11. cu,
  12.  Robert
  13.  
  14. -------------------------------------------------------------------------
  15.  
  16. diff -cr mint.org/bios.c mint.110/bios.c
  17. *** mint.org/bios.c    Fri Feb 11 18:16:12 1994
  18. --- mint.110/bios.c    Thu Feb 24 09:19:10 1994
  19. ***************
  20. *** 356,363 ****
  21.       long *place;
  22.       long old;
  23.       extern long save_dos, save_bios, save_xbios;    /* in main.c */
  24.       extern int no_mem_prot;                /* in main.c */
  25.       place = (long *)(((long)number) << 2);
  26.       if (number == 0x21)                /* trap_1 */
  27.           old = save_dos;
  28. --- 356,364 ----
  29.       long *place;
  30.       long old;
  31.       extern long save_dos, save_bios, save_xbios;    /* in main.c */
  32. + #ifndef ONLY000    
  33.       extern int no_mem_prot;                /* in main.c */
  34. ! #endif
  35.       place = (long *)(((long)number) << 2);
  36.       if (number == 0x21)                /* trap_1 */
  37.           old = save_dos;
  38. ***************
  39. *** 401,406 ****
  40. --- 402,408 ----
  41.               *place = mintcerr;
  42.           }
  43.           else {
  44. + #ifndef ONLY000        
  45.               if (!no_mem_prot) {
  46.               /*
  47.                * if memory protection is on, the vector should be
  48. ***************
  49. *** 414,419 ****
  50. --- 416,422 ----
  51.                   mark_region(r, PROT_S);
  52.                   }
  53.               }
  54. + #endif            
  55.           /* We would do just *place = vector except that
  56.            * someone else might be intercepting Setexc looking
  57.            * for something in particular...
  58. diff -cr mint.org/context.spp mint.110/context.spp
  59. *** mint.org/context.spp    Tue Feb  1 03:28:18 1994
  60. --- mint.110/context.spp    Wed Mar  2 14:59:54 1994
  61. ***************
  62. *** 52,77 ****
  63. --- 52,83 ----
  64.       XREF    _fpu
  65.       XREF    _framesizes
  66.       XREF    _new_trace    ; from intr.s
  67. + %ifndef ONLY000    
  68.       XREF    _no_mem_prot    
  69. + %endif
  70.   
  71.       TEXT
  72.   _build_context:
  73.       move.l    a0,-(sp)    ; save a0; we'll use it for scratch
  74.       move.l    8(sp),a0    ; get address of save area
  75.   
  76. + %ifndef ONLY000
  77.       tst.w    _no_mem_prot    ; is there memory protection?
  78.       bne.s    noprot1
  79.       pmove    crp,C_CRP(a0)    ; save CRP from MMU
  80.       pmove    tc,C_TC(a0)    ; save TC from MMU
  81.   noprot1:
  82. + %endif
  83.       movem.l    d0-d7/a0-a6,(a0)    ; save registers D0-D7/A0-A6
  84.       clr.b    C_PTRACE(a0)    ; no pending traces, thanks!
  85.       lea    12(sp),a1    ; start of the interesting stack area
  86.       move.w    (a1)+,d0    ; 68000 fake frame format
  87.   
  88.   %ifndef ONLY030
  89. + %ifndef ONLY000
  90.       move.w    ($59e).w,d7    ; get process frame flag
  91.       bne.s    nojunk        ; we have some junk on the stack
  92. + %endif    
  93.       move.w    d0,C_SFMT(a0)    ; save fake frame format
  94.       subq.w    #$8,d0        ; if bus error (note: subq is faster than
  95.       beq.s    group0        ; cmp, and we won't need d0 later)
  96. ***************
  97. *** 84,89 ****
  98. --- 90,96 ----
  99.       move.w    (a1)+,d0    ; get SR of context
  100.       move.w    d0,C_SR(a0)    ; save it
  101.       move.l    (a1)+,C_PC(a0)    ; save PC of context
  102. + %ifndef ONLY000
  103.   %ifndef ONLY030
  104.       tst.w    d7        ; test longframe (AKP)
  105.       beq.s    short1        ; short
  106. ***************
  107. *** 108,113 ****
  108. --- 115,121 ----
  109.   bcint:    move.w    (a1)+,(a2)+    ; copy CPU internal state
  110.   bcover:    dbf    d1,bcint
  111.   short1:
  112. + %endif
  113.       move.l    a1,C_SSP(a0)    ; a1 now points above the state frame
  114.       move.l    usp,a1        ; save user stack pointer
  115.       move.l    a1,C_USP(a0)
  116. ***************
  117. *** 128,133 ****
  118. --- 136,142 ----
  119.       move.l    a0,-(sp)    ; save a0
  120.       move.l    8(sp),a0    ; get address of context save area
  121.   
  122. + %ifndef ONLY000
  123.       tst.w    _no_mem_prot
  124.       bne.s    noprot2
  125.       pmove    crp,C_CRP(a0)    ; save the CRP from the MMU
  126. ***************
  127. *** 143,148 ****
  128. --- 152,158 ----
  129.       fmovem.x    fp0-fp7,C_FREGS(a0)        ; save data registers
  130.       fmovem.l    fpcr/fpsr/fpiar,C_FCTRL(a0)    ; and control registers
  131.   nofpu2:
  132. + %endif
  133.   ; note: I am somewhat unsure of this assumption, viz that save_context
  134.   ; can never be called in a situation where a co-processor
  135.   ; mid-instruction stack frame would be required. I suspect this is a
  136. ***************
  137. *** 189,195 ****
  138.   ;    pmove    C_CRP(a0),crp    ; restore MMU root pointer
  139.   ;    pmove    C_TC(a0),tc    ; restore MMU control register
  140.   noprot3:
  141.   %ifndef ONLY030
  142.       tst.w    ($59e).w    ; test longframe (AKP)
  143.       beq.s    short3
  144. --- 199,205 ----
  145.   ;    pmove    C_CRP(a0),crp    ; restore MMU root pointer
  146.   ;    pmove    C_TC(a0),tc    ; restore MMU control register
  147.   noprot3:
  148. ! %ifndef ONLY000
  149.   %ifndef ONLY030
  150.       tst.w    ($59e).w    ; test longframe (AKP)
  151.       beq.s    short3
  152. ***************
  153. *** 214,220 ****
  154.   rcovernc:
  155.       move.w    d0,-(sp)    ; frame format identifier
  156.   ; if running with a true coprocessor we need to restore the FPU state
  157.       tst.w    _fpu        ; is there a true FPU in the system
  158.       beq.s    short3
  159.       tst.b    C_FSTATE(a0)        ; if NULL frame then the FPU is not in use
  160. --- 224,229 ----
  161. ***************
  162. *** 223,228 ****
  163. --- 232,238 ----
  164.       fmovem.x    C_FREGS(a0),fp0-fp7        ; and data registers
  165.   short4:    frestore    C_FSTATE(a0)            ; finally the internal state
  166.   short3:
  167. + %endif
  168.       move.l    C_PC(a0),-(sp)    ; push the PC
  169.       move.w    C_SR(a0),-(sp)    ; push the status register
  170.       tst.b    C_PTRACE(a0)        ; check for a pending trace
  171. ***************
  172. *** 250,255 ****
  173. --- 260,266 ----
  174.       move.l    C_TERM(a0),($408).w    ; restore GEMDOS terminate vector
  175.   
  176.   ; Set memory context now
  177. + %ifndef ONLY000
  178.       tst.w    _no_mem_prot
  179.       bne.s    noprot4
  180.       pmove    C_CRP(a0),crp    ; restore MMU root pointer
  181. ***************
  182. *** 278,284 ****
  183.   rcover2nc:
  184.       move.w    d0,-(sp)    ; frame format identifier
  185.   ; if running with a true coprocessor we need to restore the FPU state
  186.       tst.w    _fpu        ; is there a true FPU in the system
  187.       beq.s    short6
  188.       tst.b    C_FSTATE(a0)        ; if NULL frame then the FPU is not in use
  189. --- 289,294 ----
  190. ***************
  191. *** 287,292 ****
  192. --- 297,303 ----
  193.       fmovem.x    C_FREGS(a0),fp0-fp7        ; and data registers
  194.   short5:    frestore    C_FSTATE(a0)            ; finally the internal state
  195.   short6:
  196. + %endif
  197.       move.l    C_PC(a0),-(sp)    ; push the PC
  198.       move.w    C_SR(a0),-(sp)    ; push status register
  199.       tst.b    C_PTRACE(a0)        ; check for a pending trace
  200. diff -cr mint.org/cpu.spp mint.110/cpu.spp
  201. *** mint.org/cpu.spp    Tue Aug 17 01:29:36 1993
  202. --- mint.110/cpu.spp    Mon Feb 21 13:37:56 1994
  203. ***************
  204. *** 8,13 ****
  205. --- 8,14 ----
  206.   ; The TC is four bytes at sp@(0xc).  "Nulls" is here because we need to
  207.   ; shove zeros into a few places.
  208.   ;
  209. + %ifndef ONLY000
  210.       DATA
  211.   nulltc:    dc.l    0
  212.   
  213. ***************
  214. *** 109,114 ****
  215. --- 110,124 ----
  216.   noc:    rts
  217.   
  218.   ;
  219. + ; PMMU stuff
  220. + ;
  221. +     XDEF    _flush_pmmu
  222. + _flush_pmmu:
  223. +     pflusha
  224. +     rts
  225. +     END
  226. + %endif
  227. + ;
  228.   ; Set the stack pointer to a new value
  229.   ; Called when we're starting GEM from the exec_os vector
  230.   
  231. ***************
  232. *** 118,128 ****
  233.       move.l    (sp)+,sp    ; set stack pointer
  234.       jmp    (a0)        ; return
  235.   
  236. ! ;
  237. ! ; PMMU stuff
  238. ! ;
  239. !     XDEF    _flush_pmmu
  240. ! _flush_pmmu:
  241. !     pflusha
  242. !     rts
  243. !     END
  244. --- 128,131 ----
  245.       move.l    (sp)+,sp    ; set stack pointer
  246.       jmp    (a0)        ; return
  247.   
  248. diff -cr mint.org/debug.c mint.110/debug.c
  249. *** mint.org/debug.c    Mon Sep 27 21:35:48 1993
  250. --- mint.110/debug.c    Mon Feb 21 14:43:44 1994
  251. ***************
  252. *** 563,570 ****
  253. --- 563,572 ----
  254.           if ( (r & 0x0ff) == 'x' ) {
  255.               extern int no_mem_prot;
  256.               close_filesys();
  257. + #ifndef ONLY000            
  258.               if (!no_mem_prot)
  259.                   restr_mmu();
  260. + #endif                
  261.               restr_screen();
  262.               (void)Super((void *)tosssp);    /* gratuitous (void *) for Lattice */
  263.   #ifdef PROFILING
  264. ***************
  265. *** 624,629 ****
  266. --- 626,632 ----
  267.       case 0x42:        /* F8: dump log */
  268.           DUMPLOG();
  269.           break;
  270. + #ifndef ONLY000        
  271.       case 0x43:        /* F9: dump the global memory table */
  272.           QUICKDUMP();
  273.           break;
  274. ***************
  275. *** 634,638 ****
  276. --- 637,642 ----
  277.           BIG_MEM_DUMP(0,0);
  278.           break;
  279.   #endif
  280. + #endif
  281.       }
  282.   }
  283. diff -cr mint.org/dosmem.c mint.110/dosmem.c
  284. *** mint.org/dosmem.c    Wed Feb  2 21:43:02 1994
  285. --- mint.110/dosmem.c    Thu Feb 24 09:49:18 1994
  286. ***************
  287. *** 29,37 ****
  288. --- 29,39 ----
  289.   m_addalt(start, size)
  290.       long start, size;
  291.   {
  292. + #ifndef ONLY000
  293.       extern int no_mem_prot;        /* see main.c and memprot.c */
  294.   
  295.       if (!no_mem_prot) return 0;    /* pretend to succeed */
  296. + #endif
  297.       if (!add_region(alt, start, size, M_ALT))
  298.           return EINTRN;
  299.       else
  300. ***************
  301. *** 506,512 ****
  302.           }
  303.           *newname = 0;
  304.       }
  305.       if (mkload || mkbase) {
  306.           /*
  307.            * Now that the file's loaded, flags is set to the prgflags
  308. --- 508,514 ----
  309.           }
  310.           *newname = 0;
  311.       }
  312. ! #ifndef ONLY000
  313.       if (mkload || mkbase) {
  314.           /*
  315.            * Now that the file's loaded, flags is set to the prgflags
  316. ***************
  317. *** 516,522 ****
  318.            */
  319.           mark_region(env,(short)((flags & F_PROTMODE) >> F_PROTSHIFT));
  320.       }
  321.       if (p) {
  322.       /* free the PROC struct so fork_proc will succeed */
  323.       /* FIXME: it would be much better to pass the PROC as a parameter
  324. --- 518,524 ----
  325.            */
  326.           mark_region(env,(short)((flags & F_PROTMODE) >> F_PROTSHIFT));
  327.       }
  328. ! #endif
  329.       if (p) {
  330.       /* free the PROC struct so fork_proc will succeed */
  331.       /* FIXME: it would be much better to pass the PROC as a parameter
  332. ***************
  333. *** 993,1003 ****
  334. --- 995,1007 ----
  335.    */
  336.       for (i = 0; i < curproc->num_reg; i++) {
  337.           m = curproc->mem[i];
  338. + #ifndef ONLY000        
  339.           if (m && m->links == 1) {    /* only the TSR is owner */
  340.               if (get_prot_mode(m) == PROT_P) {
  341.                   mark_region(m, PROT_G);
  342.               }
  343.           }
  344. + #endif        
  345.       }
  346.       return terminate(code, TSR_Q);
  347.   }
  348. diff -cr mint.org/filesys.c mint.110/filesys.c
  349. *** mint.org/filesys.c    Wed Feb  2 21:43:44 1994
  350. --- mint.110/filesys.c    Wed Feb 23 10:39:32 1994
  351. ***************
  352. *** 144,151 ****
  353.       int i;
  354.       extern struct kerinfo kernelinfo; /* in main.c */
  355.       char curpath[PATH_MAX];
  356.       MEMREGION *xfsreg;
  357.       curproc->dta = &dta;
  358.       d_getpath(curpath,0);
  359.   
  360. --- 144,152 ----
  361.       int i;
  362.       extern struct kerinfo kernelinfo; /* in main.c */
  363.       char curpath[PATH_MAX];
  364. + #ifndef ONLY000    
  365.       MEMREGION *xfsreg;
  366. ! #endif
  367.       curproc->dta = &dta;
  368.       d_getpath(curpath,0);
  369.   
  370. ***************
  371. *** 179,187 ****
  372.           if (fs) {
  373.               TRACE(("%s loaded OK", dta.dta_name));
  374.       /* put the loaded XFS into super accesible memory */
  375.               xfsreg = addr2region( (long) b );
  376.               mark_region(xfsreg, PROT_S);
  377.       /* link it into the list of drivers */
  378.       /* uk: but only if it has not installed itself via Dcntl()
  379.        *     after checking if file system is already installed,
  380. --- 180,189 ----
  381.           if (fs) {
  382.               TRACE(("%s loaded OK", dta.dta_name));
  383.       /* put the loaded XFS into super accesible memory */
  384. + #ifndef ONLY000    
  385.               xfsreg = addr2region( (long) b );
  386.               mark_region(xfsreg, PROT_S);
  387. ! #endif
  388.       /* link it into the list of drivers */
  389.       /* uk: but only if it has not installed itself via Dcntl()
  390.        *     after checking if file system is already installed,
  391. ***************
  392. *** 259,266 ****
  393.       char curpath[PATH_MAX];
  394.       char dev_name[PATH_MAX];  /* a bit long, but one never knows... */
  395.       char ch, *p;
  396.       MEMREGION *xddreg;
  397.   
  398.       curproc->dta = &dta;
  399.       d_getpath(curpath,0);
  400. --- 261,269 ----
  401.       char curpath[PATH_MAX];
  402.       char dev_name[PATH_MAX];  /* a bit long, but one never knows... */
  403.       char ch, *p;
  404. + #ifndef ONLY000    
  405.       MEMREGION *xddreg;
  406. ! #endif
  407.   
  408.       curproc->dta = &dta;
  409.       d_getpath(curpath,0);
  410. ***************
  411. *** 321,328 ****
  412. --- 324,333 ----
  413.               }
  414.               TRACE(("%s loaded OK", dta.dta_name));
  415.       /* put the loaded XDD into super accesible memory */
  416. + #ifndef ONLY000    
  417.               xddreg = addr2region( (long) b );
  418.               mark_region(xddreg, PROT_S);
  419. + #endif            
  420.           } else {
  421.               DEBUG(("%s returned null", dta.dta_name));
  422.               m_free((virtaddr)b);
  423. diff -cr mint.org/intr.spp mint.110/intr.spp
  424. *** mint.org/intr.spp    Wed Feb  2 16:52:32 1994
  425. --- mint.110/intr.spp    Wed Mar  2 15:09:54 1994
  426. ***************
  427. *** 64,75 ****
  428. --- 64,77 ----
  429.       XREF    _keyrec
  430.   
  431.   _mint_vbl:
  432. + %ifndef ONLY000
  433.   %ifndef ONLY030
  434.       tst.w    ($59e).w        ; test longframe (AKP)
  435.       beq.s    L_short1
  436.   %endif
  437.       clr.w    -(sp)            ; yes, long frames: push a frame word
  438.   L_short1:
  439. + %endif
  440.       pea    L_comeback        ; push fake PC
  441.       move.w    sr,-(sp)        ; push status register
  442.       move.l    _old_vbl+8,-(sp)    ; go service the interrupt
  443. ***************
  444. *** 315,322 ****
  445. --- 317,326 ----
  446.       move.l    _curproc,a0
  447.       move.l    P_EXCSSP(a0),a1
  448.       lea    $10(a1),a1        ; point to access address
  449. + %ifndef ONLY000
  450.       tst.w    ($59e).w        ; test longframe
  451.       beq.s    NOMMU1
  452. + %endif
  453.       addq.w    #8,a1            ; on 68000, address is 8 bytes further
  454.   NOMMU1:
  455.       move.l    (a1),P_EXCADDR(a0)    ; save the access address
  456. diff -cr mint.org/main.c mint.110/main.c
  457. *** mint.org/main.c    Fri Feb 11 18:37:16 1994
  458. --- mint.110/main.c    Thu Feb 24 08:56:18 1994
  459. ***************
  460. *** 576,582 ****
  461. --- 576,584 ----
  462.       long *sysbase;
  463.       long r;
  464.       extern int debug_level, debug_logging;    /* in debug.c */
  465. + #ifndef ONLY000    
  466.       extern int no_mem_prot;        /* memprot.c */
  467. + #endif    
  468.       extern const char *greet1, *greet2;
  469.                       /* welcome.c */
  470.       static char buf[SPRINTF_MAX];
  471. ***************
  472. *** 647,661 ****
  473. --- 649,667 ----
  474.               int givenotice = (argv[0][2] != 'w');
  475.           /* -m and -p turn off memory protection */
  476.           extern const char *memprot_notice, *memprot_warning;
  477. + #ifndef ONLY000    
  478.               if (no_mem_prot) {
  479. + #endif            
  480.                   if (givenotice)
  481.                   Cconws(memprot_notice);
  482. + #ifndef ONLY000    
  483.               }
  484.               else {
  485.                   no_mem_prot = 1;
  486.                   if (givenotice)
  487.                   Cconws(memprot_warning);
  488.               }
  489. + #endif
  490.           }
  491.           else if (argv[0][1] == 'l') {
  492.           /* -l turns on debug logging */
  493. ***************
  494. *** 691,697 ****
  495.           (void)Crawcin();
  496.           Cconws("\r\033K");
  497.       }
  498.   #ifdef notdef
  499.   /* if less than 1 megabyte free, turn off memory protection */
  500.       if (Mxalloc(-1L, 3) < ONE_MEG && !no_mem_prot) {
  501. --- 697,703 ----
  502.           (void)Crawcin();
  503.           Cconws("\r\033K");
  504.       }
  505. ! #ifndef ONLY000    
  506.   #ifdef notdef
  507.   /* if less than 1 megabyte free, turn off memory protection */
  508.       if (Mxalloc(-1L, 3) < ONE_MEG && !no_mem_prot) {
  509. ***************
  510. *** 706,711 ****
  511. --- 712,718 ----
  512.    */
  513.       if (!no_mem_prot && Fsfirst("\\AUTO\\MINTNP.PRG",0) == 0)
  514.           no_mem_prot = 1;
  515. + #endif
  516.   
  517.   /* check for GEM -- this must be done from user mode */
  518.       gem_active = check_for_gem();
  519. ***************
  520. *** 721,729 ****
  521.           curpath[1] = 0;
  522.       }
  523.       tosssp = (long)Super(0L);    /* enter supervisor mode */
  524.       if (!no_mem_prot)
  525.           save_mmu();        /* save current MMU setup */
  526.   /* get GEMDOS pointer to current basepage */
  527.   /* 0x4f2 points to the base of the OS; here we can find the OS compilation
  528.      date, and (in newer versions of TOS) where the current basepage pointer
  529. --- 728,737 ----
  530.           curpath[1] = 0;
  531.       }
  532.       tosssp = (long)Super(0L);    /* enter supervisor mode */
  533. + #ifndef ONLY000    
  534.       if (!no_mem_prot)
  535.           save_mmu();        /* save current MMU setup */
  536. ! #endif
  537.   /* get GEMDOS pointer to current basepage */
  538.   /* 0x4f2 points to the base of the OS; here we can find the OS compilation
  539.      date, and (in newer versions of TOS) where the current basepage pointer
  540. ***************
  541. *** 929,936 ****
  542. --- 937,946 ----
  543.       }
  544.       restr_intr();
  545.       close_filesys();
  546. + #ifndef ONLY000    
  547.       if (!no_mem_prot)
  548.           restr_mmu();
  549. + #endif        
  550.       restr_screen();
  551.   
  552.       (void)Super((void *)tosssp);    /* gratuitous (void *) for Lattice */
  553. ***************
  554. *** 1014,1025 ****
  555. --- 1024,1038 ----
  556.           i++;
  557.       }
  558.   
  559. + #ifndef ONLY000    
  560.   /* jr: install PMMU cookie if memory protection is used */
  561.       if (!no_mem_prot) {
  562.           strncpy(newcookie[i].tag.aschar, "PMMU", 4);
  563.           newcookie[i].value = 0;
  564.           i++;
  565.       }
  566. + #endif
  567.   
  568.   /* the last cookie should have a 0 tag, and a value indicating the number
  569.    * of slots, total
  570. ***************
  571. *** 1050,1057 ****
  572.       int foundcpu = 0;
  573.       int i;
  574.       long *sysbase;
  575.       extern int no_mem_prot;
  576.       mcpu = 0;
  577.       jar = *CJAR;    /* CJAR defined in cookie.h */
  578.       if (jar) {
  579. --- 1063,1071 ----
  580.       int foundcpu = 0;
  581.       int i;
  582.       long *sysbase;
  583. + #ifndef ONLY000        
  584.       extern int no_mem_prot;
  585. ! #endif
  586.       mcpu = 0;
  587.       jar = *CJAR;    /* CJAR defined in cookie.h */
  588.       if (jar) {
  589. ***************
  590. *** 1062,1068 ****
  591. --- 1076,1084 ----
  592.               } else if (!strncmp(jar->tag.aschar, "_CPU",4)) {
  593.                       /* if not '030 then no memory protection */
  594.                   mcpu = jar->value;
  595. + #ifndef ONLY000    
  596.                       if (jar->value != 30) no_mem_prot = 1;
  597. + #endif
  598.                       foundcpu = 1;
  599.               } else if (!strncmp(jar->tag.aschar, "_VDO",4)) {
  600.                   FalconVideo = (jar->value == 0x00030000L);
  601. ***************
  602. *** 1077,1088 ****
  603. --- 1093,1108 ----
  604.                   /* jr: if PMMU cookie exists, someone else is
  605.                      already using the PMMU */
  606.                   Cconws ("MiNT: PMMU already in use, memory protection turned off.\r\n");
  607. + #ifndef ONLY000    
  608.                   no_mem_prot = 1;
  609. + #endif
  610.               }
  611.               jar++;
  612.           }
  613.       }
  614. + #ifndef ONLY000    
  615.       if (!foundcpu) no_mem_prot = 1;
  616. + #endif
  617.   /*
  618.    * if no preference found, look at the country code to decide
  619.    */
  620. diff -cr mint.org/makefile mint.110/makefile
  621. *** mint.org/makefile    Tue Mar  1 10:59:04 1994
  622. --- mint.110/makefile    Thu Feb 24 18:52:10 1994
  623. ***************
  624. *** 36,41 ****
  625. --- 36,42 ----
  626.   AS = gcc
  627.   MODEL = -mshort
  628.   MODEL030 = -mshort -m68020
  629. + MODEL000 = -mshort
  630.   LIBS = -liio16
  631.   
  632.   # add -DMULTITOS for a MultiTOS kernel
  633. ***************
  634. *** 45,50 ****
  635. --- 46,52 ----
  636.   DEFS = #-DMULTITOS -DDEBUG_INFO
  637.   #DEFS030 = -DMULTITOS -DONLY030
  638.   DEFS030 = -DONLY030
  639. + DEFS000 = -DONLY000
  640.   
  641.   #
  642.   # if you have an older version of gcc, it won't understand -G;
  643. ***************
  644. *** 55,72 ****
  645.   CFLAGS = -G -Wall -O2 -fomit-frame-pointer $(MODEL) $(DEFS)
  646.   ASFLAGS = $(MODEL)
  647.   CFLAGS030 = -G -Wall -O2 -fomit-frame-pointer $(MODEL030) $(DEFS030)
  648. ! ASFLAGS030 = $(MODEL030)
  649.   
  650. ! COBJS = bios.o xbios.o console.o dos.o dosdir.o dosfile.o dosmem.o dossig.o \
  651. !     filesys.o main.o mem.o proc.o signal.o timeout.o tty.o util.o \
  652. !     biosfs.o pipefs.o procfs.o tosfs.o debug.o rendez.o \
  653. !     unifs.o shmfs.o fasttext.o welcome.o nalloc2.o memprot.o realloc.o
  654.   
  655.   COBJS030 = bios.o0 xbios.o0 console.o0 dos.o0 dosdir.o0 dosfile.o0 dosmem.o0 dossig.o0 \
  656.       filesys.o0 main.o0 mem.o0 proc.o0 signal.o0 timeout.o0 tty.o0 util.o0 \
  657.       biosfs.o0 pipefs.o0 procfs.o0 tosfs.o0 debug.o0 rendez.o0 \
  658.       unifs.o0 shmfs.o0 fasttext.o0 welcome.o0 nalloc2.o0 memprot.o realloc.o0
  659.   
  660.   CFILES = bios.c xbios.c console.c dos.c dosdir.c dosfile.c dosmem.c dossig.c \
  661.       filesys.c main.c mem.c proc.c signal.c timeout.c tty.c util.c \
  662.       biosfs.c pipefs.c procfs.c tosfs.c debug.c rendez.c \
  663. --- 57,83 ----
  664.   CFLAGS = -G -Wall -O2 -fomit-frame-pointer $(MODEL) $(DEFS)
  665.   ASFLAGS = $(MODEL)
  666.   CFLAGS030 = -G -Wall -O2 -fomit-frame-pointer $(MODEL030) $(DEFS030)
  667. ! ASFLAGS0 = $(MODEL030)
  668. ! CFLAGS000 = -G -Wall -O2 -fomit-frame-pointer $(MODEL000) $(DEFS000)
  669. ! ASFLAGS00 = $(MODEL000)
  670. ! COMMONOBJS = console.o dos.o dosdir.o dosfile.o dossig.o \
  671. !     timeout.o tty.o util.o \
  672. !     biosfs.o pipefs.o tosfs.o rendez.o \
  673. !     unifs.o fasttext.o welcome.o nalloc2.o
  674.   
  675. ! COBJS = $(COMMONOBJS) bios.o xbios.o dosmem.o filesys.o main.o mem.o proc.o signal.o procfs.o debug.o \
  676. !     memprot.o shmfs.o realloc.o
  677.   
  678.   COBJS030 = bios.o0 xbios.o0 console.o0 dos.o0 dosdir.o0 dosfile.o0 dosmem.o0 dossig.o0 \
  679.       filesys.o0 main.o0 mem.o0 proc.o0 signal.o0 timeout.o0 tty.o0 util.o0 \
  680.       biosfs.o0 pipefs.o0 procfs.o0 tosfs.o0 debug.o0 rendez.o0 \
  681.       unifs.o0 shmfs.o0 fasttext.o0 welcome.o0 nalloc2.o0 memprot.o realloc.o0
  682.   
  683. + COBJS000 = $(COMMONOBJS) bios.o00 xbios.o00 dosmem.o00 filesys.o00 main.o00 mem.o00 proc.o00 signal.o00 \
  684. +     procfs.o00 debug.o00 shmfs.o00 realloc.o00
  685.   CFILES = bios.c xbios.c console.c dos.c dosdir.c dosfile.c dosmem.c dossig.c \
  686.       filesys.c main.c mem.c proc.c signal.c timeout.c tty.c util.c \
  687.       biosfs.c pipefs.c procfs.c tosfs.c debug.c rendez.c \
  688. ***************
  689. *** 81,91 ****
  690.   
  691.   SOBJS = context.o intr.o syscall.o quickzer.o quickmov.o cpu.o
  692.   SOBJS030 = context.o0 intr.o0 syscall.o0 quickzer.o0 quickmov.o0 cpu.o0
  693.   
  694.   OBJS = $(COBJS) $(SOBJS)
  695.   OBJS030 = $(COBJS030) $(SOBJS030)
  696.   
  697. ! #all: mint.prg mint030.prg
  698.   
  699.   mint.prg: $(OBJS)
  700.       $(CC) $(CFLAGS) -o mint.prg $(OBJS) $(LIBS)
  701. --- 92,104 ----
  702.   
  703.   SOBJS = context.o intr.o syscall.o quickzer.o quickmov.o cpu.o
  704.   SOBJS030 = context.o0 intr.o0 syscall.o0 quickzer.o0 quickmov.o0 cpu.o0
  705. + SOBJS000 = context.o00 intr.o00 syscall.o00 quickzer.o00 quickmov.o00 cpu.o00
  706.   
  707.   OBJS = $(COBJS) $(SOBJS)
  708.   OBJS030 = $(COBJS030) $(SOBJS030)
  709. + OBJS000 = $(COBJS000) $(SOBJS000)
  710.   
  711. ! all: mint.prg mint030.prg mint000.prg
  712.   
  713.   mint.prg: $(OBJS)
  714.       $(CC) $(CFLAGS) -o mint.prg $(OBJS) $(LIBS)
  715. ***************
  716. *** 95,100 ****
  717. --- 108,117 ----
  718.       $(CC) $(CFLAGS030) -o mint030.prg $(OBJS030) $(LIBS)
  719.   #    strip mint030.prg
  720.   
  721. + mint000.prg: $(OBJS000)
  722. +     $(CC) $(CFLAGS000) -o mint000.prg $(OBJS000) $(LIBS)
  723. + #    strip mint000.prg
  724.   $(SOBJS): proc.h
  725.   $(COBJS): mint.h proc.h file.h
  726.   
  727. ***************
  728. *** 178,184 ****
  729.   #
  730.   # assembler source files
  731.   #
  732. ! .SUFFIXES: .spp .o0
  733.   
  734.   .spp.o:
  735.       $(ATRANS) $(DEFS) -gas -o $*.s $<
  736. --- 195,201 ----
  737.   #
  738.   # assembler source files
  739.   #
  740. ! .SUFFIXES: .spp .o0 .o00
  741.   
  742.   .spp.o:
  743.       $(ATRANS) $(DEFS) -gas -o $*.s $<
  744. ***************
  745. *** 188,195 ****
  746. --- 205,218 ----
  747.       $(ATRANS) $(DEFS030) -gas -o $*.s $<
  748.       $(AS) $(ASFLAGS0) -o $@ -c $*.s
  749.       $(RM) $*.s
  750. + .spp.o00:
  751. +     $(ATRANS) $(DEFS000) -gas -o $*.s $<
  752. +     $(AS) $(ASFLAGS00) -o $@ -c $*.s
  753. +     $(RM) $*.s
  754.   .c.o0:
  755.       $(CC) $(CFLAGS030) -o $@ -c $<
  756. + .c.o00:
  757. +     $(CC) $(CFLAGS000) -o $@ -c $<
  758.   
  759.   context.o: context.spp magic.i $(ATRANS)
  760.   intr.o: intr.spp magic.i $(ATRANS)
  761. ***************
  762. *** 205,210 ****
  763. --- 228,240 ----
  764.   quickmov.o0: quickmov.spp $(ATRANS)
  765.   cpu.o0: cpu.spp $(ATRANS)
  766.   
  767. + context.o00: context.spp magic.i $(ATRANS)
  768. + intr.o00: intr.spp magic.i $(ATRANS)
  769. + syscall.o00: syscall.spp magic.i $(ATRANS)
  770. + quickzer.o00: quickzer.spp $(ATRANS)
  771. + quickmov.o00: quickmov.spp $(ATRANS)
  772. + cpu.o00: cpu.spp $(ATRANS)
  773.   #
  774.   # mkptypes generates prototypes from C source code. If you don't have it,
  775.   # you'll have to add/delete function prototypes by hand.
  776. ***************
  777. *** 219,225 ****
  778.   #
  779.   # macros for cleaning up
  780.   #
  781. ! GENFILES= $(OBJS) $(OBJS030) $(ATRANSOBJ) $(ATRANS) $(GENMAGICPRG)
  782.   EXTRAS= asmtab.c asmtab.h mint.prg
  783.   
  784.   clean:
  785. --- 249,255 ----
  786.   #
  787.   # macros for cleaning up
  788.   #
  789. ! GENFILES= $(OBJS) $(OBJS030) $(OBJS000) $(ATRANSOBJ) $(ATRANS) $(GENMAGICPRG)
  790.   EXTRAS= asmtab.c asmtab.h mint.prg
  791.   
  792.   clean:
  793. diff -cr mint.org/mem.c mint.110/mem.c
  794. *** mint.org/mem.c    Tue Feb  1 03:31:44 1994
  795. --- mint.110/mem.c    Thu Feb 24 10:01:06 1994
  796. ***************
  797. *** 68,73 ****
  798. --- 68,74 ----
  799.       init_core();
  800.       init_swap();
  801.   
  802. + #ifndef ONLY000
  803.       init_tables();            /* initialize MMU constants */
  804.   
  805.       /* mark all the regions in the core & alt lists as "invalid" */
  806. ***************
  807. *** 77,82 ****
  808. --- 78,84 ----
  809.       for (r = *alt; r; r = r->next) {
  810.           mark_region(r,PROT_I);
  811.       }
  812. + #endif
  813.   
  814.       /* make sure the screen is set up properly */
  815.       newbase = s_realloc(scrnsize);
  816. ***************
  817. *** 430,436 ****
  818. --- 432,440 ----
  819.       return EACCDN;
  820.   
  821.   found:
  822. + #ifndef ONLY000
  823.       mark_region(*mr,newmode);
  824. + #endif    
  825.       return E_OK;
  826.   }
  827.   
  828. ***************
  829. *** 466,472 ****
  830. --- 470,478 ----
  831.               reg->links++;
  832.               proc->mem[i] = reg;
  833.               proc->addr[i] = (virtaddr) reg->loc;
  834. + #ifndef ONLY000            
  835.               mark_proc_region(proc,reg,PROT_P);
  836. + #endif            
  837.               return proc->addr[i];
  838.           }
  839.       }
  840. ***************
  841. *** 543,552 ****
  842. --- 549,560 ----
  843.               if (reg->links == 0) {
  844.                   free_region(reg);
  845.               }
  846. + #ifndef ONLY000            
  847.               else {
  848.                   /* cause curproc's table to be updated */
  849.                   mark_proc_region(proc,reg,PROT_I);
  850.               }
  851. + #endif            
  852.               return;
  853.           }
  854.       }
  855. ***************
  856. *** 628,634 ****
  857. --- 636,644 ----
  858.       return NULL;
  859.   
  860.   win:
  861. + #ifndef ONLY000
  862.       mark_region(n, mode & PROT_PROTMODE);
  863. + #endif
  864.       if (mode & M_KEEP) n->mflags |= M_KEEP;
  865.   
  866.       return n;
  867. ***************
  868. *** 698,707 ****
  869.       m = *map;
  870.       assert(m);
  871.   
  872.       /* MEMPROT: invalidate */
  873.       if (map == core || map == alt)
  874.           mark_region(reg,PROT_I);
  875.       if (m == reg) goto merge_after;
  876.   
  877.   /* merge previous region if it's free and contiguous with 'reg' */
  878. --- 708,718 ----
  879.       m = *map;
  880.       assert(m);
  881.   
  882. + #ifndef ONLY000
  883.       /* MEMPROT: invalidate */
  884.       if (map == core || map == alt)
  885.           mark_region(reg,PROT_I);
  886. ! #endif
  887.       if (m == reg) goto merge_after;
  888.   
  889.   /* merge previous region if it's free and contiguous with 'reg' */
  890. ***************
  891. *** 790,797 ****
  892.           n->len += diff;
  893.           /* MEMPROT: invalidate the second half */
  894.           /* (part of it is already invalid; that's OK) */
  895.           mark_region(n,PROT_I);
  896.           return 0;
  897.       }
  898.       else {
  899. --- 801,809 ----
  900.           n->len += diff;
  901.           /* MEMPROT: invalidate the second half */
  902.           /* (part of it is already invalid; that's OK) */
  903. + #ifndef ONLY000        
  904.           mark_region(n,PROT_I);
  905. ! #endif
  906.           return 0;
  907.       }
  908.       else {
  909. ***************
  910. *** 806,813 ****
  911. --- 818,827 ----
  912.           n->mflags = reg->mflags & M_MAP;
  913.           n->next = reg->next;
  914.           reg->next = n;
  915. + #ifndef ONLY000        
  916.           /* MEMPROT: invalidate the new, free region */
  917.           mark_region(n,PROT_I);
  918. + #endif        
  919.       }
  920.       return 0;
  921.   }
  922. ***************
  923. *** 1398,1406 ****
  924.       TRACE(("exec_region"));
  925.   
  926.       b = (BASEPAGE *) mem->loc;
  927.       cpush((void *)b->p_tbase, b->p_tlen);    /* flush cached versions of the text */
  928. !     
  929.   /* set some (undocumented) variables in the basepage */
  930.       b->p_defdrv = p->curdrv;
  931.       for (i = 0; i < 6; i++)
  932. --- 1412,1420 ----
  933.       TRACE(("exec_region"));
  934.   
  935.       b = (BASEPAGE *) mem->loc;
  936. ! #ifndef ONLY000
  937.       cpush((void *)b->p_tbase, b->p_tlen);    /* flush cached versions of the text */
  938. ! #endif    
  939.   /* set some (undocumented) variables in the basepage */
  940.       b->p_defdrv = p->curdrv;
  941.       for (i = 0; i < 6; i++)
  942. ***************
  943. *** 1612,1617 ****
  944. --- 1626,1632 ----
  945.       return 0;
  946.   }
  947.   
  948. + #ifndef ONLY000
  949.   /*
  950.    * convert an address to a memory region; this works only in
  951.    * the ST RAM and TT RAM maps, and will fail for memory that
  952. ***************
  953. *** 1642,1648 ****
  954.       }
  955.       return 0;
  956.   }
  957.   /*
  958.    * some debugging stuff
  959.    */
  960. --- 1657,1663 ----
  961.       }
  962.       return 0;
  963.   }
  964. ! #endif
  965.   /*
  966.    * some debugging stuff
  967.    */
  968. diff -cr mint.org/mem.h mint.110/mem.h
  969. *** mint.org/mem.h    Wed Feb  2 17:03:06 1994
  970. --- mint.110/mem.h    Wed Feb 23 09:41:54 1994
  971. ***************
  972. *** 140,149 ****
  973. --- 140,157 ----
  974.    * STes, TTs, and Falcons). We actually set a variable in main.c
  975.    * that holds the screen boundary stuff.
  976.    */
  977. + #ifndef ONLY000 
  978.   extern int no_mem_prot;
  979. + #endif
  980.   extern int screen_boundary;
  981.   
  982. + #ifndef ONLY000 
  983.   #define MASKBITS    (no_mem_prot ? screen_boundary : (QUANTUM-1))
  984. + #else
  985. + #define MASKBITS    screen_boundary
  986. + #endif
  987.   #define ROUND(size) ((size + MASKBITS) & ~MASKBITS)
  988.   
  989.   /* interesting memory constants */
  990. diff -cr mint.org/proc.c mint.110/proc.c
  991. *** mint.org/proc.c    Fri Feb 11 21:34:08 1994
  992. --- mint.110/proc.c    Thu Feb 24 08:51:18 1994
  993. ***************
  994. *** 45,50 ****
  995. --- 45,53 ----
  996.       PROC *p;
  997.       void *pt;
  998.   
  999. + #ifdef ONLY000
  1000. +     long page_table_size = 0;
  1001. + #endif    
  1002.       pt = kmalloc(page_table_size + 16);
  1003.       if (!pt) return 0;
  1004.   
  1005. ***************
  1006. *** 174,181 ****
  1007.       }
  1008.   
  1009.   /* now that memory ownership is copied, fill in page table */
  1010.       init_page_table(p);
  1011.   /* child isn't traced */
  1012.       p->ptracer = 0;
  1013.       p->ptraceflags = 0;
  1014. --- 177,185 ----
  1015.       }
  1016.   
  1017.   /* now that memory ownership is copied, fill in page table */
  1018. + #ifndef ONLY000
  1019.       init_page_table(p);
  1020. ! #endif
  1021.   /* child isn't traced */
  1022.       p->ptracer = 0;
  1023.       p->ptraceflags = 0;
  1024. ***************
  1025. *** 246,254 ****
  1026.               curproc->root[i].dev = curproc->curdir[i].dev = i;
  1027.           }
  1028.       }
  1029.       init_page_table(curproc);
  1030.   /* Set the correct drive. The current directory we
  1031.    * set later, after all file systems have been loaded.
  1032.    */
  1033. --- 250,258 ----
  1034.               curproc->root[i].dev = curproc->curdir[i].dev = i;
  1035.           }
  1036.       }
  1037. ! #ifndef ONLY000
  1038.       init_page_table(curproc);
  1039. ! #endif
  1040.   /* Set the correct drive. The current directory we
  1041.    * set later, after all file systems have been loaded.
  1042.    */
  1043. diff -cr mint.org/procfs.c mint.110/procfs.c
  1044. *** mint.org/procfs.c    Tue Feb 15 22:23:34 1994
  1045. --- mint.110/procfs.c    Wed Feb 23 09:51:20 1994
  1046. ***************
  1047. *** 473,478 ****
  1048. --- 473,479 ----
  1049.   
  1050.   TRACE(("proc_write to pid %d: %ld bytes to %lx", p->pid, nbytes, where));
  1051.   
  1052. + #ifndef ONLY000
  1053.       prot_hold = mem_access_for(p, (ulong)where,nbytes);
  1054.       if (prot_hold == 0) {
  1055.           DEBUG(("Can't Fwrite that memory: not all the same or not owner."));
  1056. ***************
  1057. *** 482,496 ****
  1058.           DEBUG(("Attempt to Fwrite memory crossing a managed boundary"));
  1059.           return EACCDN;
  1060.       }
  1061.       bytes_written = nbytes;
  1062.       while (nbytes-- > 0) {
  1063.           *where++ = *buf++;
  1064.       }
  1065.       cpush((void *)f->pos, bytes_written);    /* flush cached data */
  1066.       /* MEMPROT: done with temp mapping (only call if temp'ed above) */
  1067.       if (prot_hold != -1) prot_temp((ulong)f->pos,bytes_written,prot_hold);
  1068.   
  1069.       f->pos += bytes_written;
  1070.       return bytes_written;
  1071. --- 483,498 ----
  1072.           DEBUG(("Attempt to Fwrite memory crossing a managed boundary"));
  1073.           return EACCDN;
  1074.       }
  1075. ! #endif
  1076.       bytes_written = nbytes;
  1077.       while (nbytes-- > 0) {
  1078.           *where++ = *buf++;
  1079.       }
  1080. + #ifndef ONLY000    
  1081.       cpush((void *)f->pos, bytes_written);    /* flush cached data */
  1082.       /* MEMPROT: done with temp mapping (only call if temp'ed above) */
  1083.       if (prot_hold != -1) prot_temp((ulong)f->pos,bytes_written,prot_hold);
  1084. + #endif
  1085.   
  1086.       f->pos += bytes_written;
  1087.       return bytes_written;
  1088. ***************
  1089. *** 509,514 ****
  1090. --- 511,517 ----
  1091.   
  1092.   TRACE(("proc_read from pid %d: %ld bytes from %lx", p->pid, nbytes, where));
  1093.   
  1094. + #ifndef ONLY000
  1095.       prot_hold = mem_access_for(p, (ulong)where,nbytes);
  1096.       if (prot_hold == 0) {
  1097.           DEBUG(("Can't Fread that memory: not all the same."));
  1098. ***************
  1099. *** 518,531 ****
  1100.           DEBUG(("Attempt to Fread memory crossing a managed boundary"));
  1101.           return EACCDN;
  1102.       }
  1103.   
  1104.       bytes_read = nbytes;
  1105.       while (nbytes-- > 0) {
  1106.           *buf++ = *where++;
  1107.       }
  1108.       /* MEMPROT: done with temp mapping (only call if temp'ed above) */
  1109.       if (prot_hold != -1) prot_temp((ulong)f->pos,bytes_read,prot_hold);
  1110.   
  1111.       f->pos += bytes_read;
  1112.       return bytes_read;
  1113. --- 521,536 ----
  1114.           DEBUG(("Attempt to Fread memory crossing a managed boundary"));
  1115.           return EACCDN;
  1116.       }
  1117. + #endif
  1118.   
  1119.       bytes_read = nbytes;
  1120.       while (nbytes-- > 0) {
  1121.           *buf++ = *where++;
  1122.       }
  1123. ! #ifndef ONLY000
  1124.       /* MEMPROT: done with temp mapping (only call if temp'ed above) */
  1125.       if (prot_hold != -1) prot_temp((ulong)f->pos,bytes_read,prot_hold);
  1126. + #endif
  1127.   
  1128.       f->pos += bytes_read;
  1129.       return bytes_read;
  1130. ***************
  1131. *** 586,592 ****
  1132. --- 591,600 ----
  1133.               /* you're making the process OS_SPECIAL */
  1134.               TRACE(("Fcntl OS_SPECIAL pid %d",p->pid));
  1135.               p->memflags = newflags;
  1136. + #ifndef ONLY000
  1137.               mem_prot_special(p);
  1138. + #endif
  1139. +             
  1140.           }
  1141.           /* note: only the low 16 bits are actually used */
  1142.           p->memflags = *((long *)buf);
  1143. diff -cr mint.org/realloc.c mint.110/realloc.c
  1144. *** mint.org/realloc.c    Tue Aug 17 01:33:16 1993
  1145. --- mint.110/realloc.c    Wed Mar  2 14:22:22 1994
  1146. ***************
  1147. *** 78,84 ****
  1148. --- 78,86 ----
  1149.           if (lastfit->len == newsize) {
  1150.               if (newm) dispose_region(newm);
  1151.               lastfit->links++;
  1152. + #ifndef ONLY000            
  1153.               mark_region(lastfit, PROT_G);
  1154. + #endif            
  1155.               return (long)lastfit;
  1156.           }
  1157.           if (!newm) return 0;    /* can't get a new region */
  1158. ***************
  1159. *** 92,98 ****
  1160. --- 94,102 ----
  1161.           newm->links++;
  1162.           newm->next = lastfit->next;
  1163.           lastfit->next = newm;
  1164. + #ifndef ONLY000            
  1165.           mark_region(newm, PROT_G);
  1166. + #endif
  1167.           return (long)newm;
  1168.       }
  1169.   
  1170. ***************
  1171. *** 125,132 ****
  1172. --- 129,138 ----
  1173.               prevptr->len += oldsize - newsize;
  1174.               reg->loc += oldsize - newsize;
  1175.               reg->len -= oldsize - newsize;
  1176. + #ifndef ONLY000            
  1177.               mark_region(prevptr, PROT_I);
  1178.               mark_region(reg, PROT_G);
  1179. + #endif
  1180.               return reg->loc;
  1181.           }
  1182.   
  1183. ***************
  1184. *** 154,161 ****
  1185. --- 160,169 ----
  1186.           else
  1187.               *map = m;
  1188.           m->next = reg;
  1189. + #ifndef ONLY000            
  1190.           mark_region(m, PROT_I);
  1191.           mark_region(reg, PROT_G);
  1192. + #endif
  1193.           return reg->loc;
  1194.       }
  1195.   
  1196. ***************
  1197. *** 192,198 ****
  1198. --- 200,208 ----
  1199.           reg->len += foo->len;
  1200.           reg->next = foo->next;
  1201.           dispose_region(foo);
  1202. + #ifndef ONLY000            
  1203.           mark_region(reg, PROT_G);
  1204. + #endif
  1205.           if (reg->len >= newsize)
  1206.               return reg->loc;
  1207.           oldsize = reg->len;
  1208. ***************
  1209. *** 220,226 ****
  1210. --- 230,238 ----
  1211.               }
  1212.               dispose_region(prevptr);
  1213.           }
  1214. + #ifndef ONLY000            
  1215.           mark_region(reg, PROT_G);
  1216. + #endif
  1217.       }
  1218.   
  1219.   /* finally! we return the new starting address of "our" region */
  1220. diff -cr mint.org/signal.c mint.110/signal.c
  1221. *** mint.org/signal.c    Wed Feb  9 22:10:02 1994
  1222. --- mint.110/signal.c    Wed Feb 23 11:23:16 1994
  1223. ***************
  1224. *** 207,225 ****
  1225.       long *procinfo = (long *)0x380L;
  1226.       int i;
  1227.       CONTEXT *crash;
  1228.       extern int no_mem_prot;
  1229.       if (sig < 0 || sig > 31) {
  1230.           ALERT("bombs(%d): sig out of range", sig);
  1231.       }
  1232.       else if (signames[sig]) {
  1233.           if (!no_mem_prot && sig == SIGBUS) {
  1234.               /* already reported by report_buserr */
  1235.           } else {
  1236.               ALERT("%s: User PC=%lx (basepage=%lx)",
  1237.                   signames[sig],
  1238.                   curproc->exception_pc, curproc->base);
  1239.           }
  1240.   /* save the processor state at crash time */
  1241.   /* assumes that "crash time" is the context curproc->ctxt[SYSCALL] */
  1242.   /* BUG: this is not true if the crash happened in the kernel; in the
  1243. --- 207,230 ----
  1244.       long *procinfo = (long *)0x380L;
  1245.       int i;
  1246.       CONTEXT *crash;
  1247. + #ifndef ONLY000    
  1248.       extern int no_mem_prot;
  1249. ! #endif
  1250.       if (sig < 0 || sig > 31) {
  1251.           ALERT("bombs(%d): sig out of range", sig);
  1252.       }
  1253.       else if (signames[sig]) {
  1254. + #ifndef ONLY000    
  1255.           if (!no_mem_prot && sig == SIGBUS) {
  1256.               /* already reported by report_buserr */
  1257.           } else {
  1258. + #endif        
  1259.               ALERT("%s: User PC=%lx (basepage=%lx)",
  1260.                   signames[sig],
  1261.                   curproc->exception_pc, curproc->base);
  1262. + #ifndef ONLY000    
  1263.           }
  1264. + #endif
  1265.   /* save the processor state at crash time */
  1266.   /* assumes that "crash time" is the context curproc->ctxt[SYSCALL] */
  1267.   /* BUG: this is not true if the crash happened in the kernel; in the
  1268. ***************
  1269. *** 563,570 ****
  1270. --- 568,577 ----
  1271.   void
  1272.   sigbus()
  1273.   {
  1274. + #ifndef ONLY000
  1275.       if (curproc->sighandle[SIGBUS] == SIG_DFL)
  1276.           report_buserr();
  1277. + #endif        
  1278.       exception(SIGBUS);
  1279.   }
  1280.   
  1281. diff -cr mint.org/syscall.spp mint.110/syscall.spp
  1282. *** mint.org/syscall.spp    Fri Feb 11 18:23:02 1994
  1283. --- mint.110/syscall.spp    Wed Mar  2 15:04:26 1994
  1284. ***************
  1285. *** 109,118 ****
  1286. --- 109,120 ----
  1287.       lea    8(sp),a1
  1288.   %else
  1289.       lea    6(sp),a1        ; supervisor mode: args on stack
  1290. + %ifndef ONLY000
  1291.       tst.w    ($59e).w        ; test longframe
  1292.       beq.s    LX_check
  1293.       addq.w    #2,a1            ; stack is a bit bigger
  1294.   %endif
  1295. + %endif
  1296.       bra.s    LX_check
  1297.   LX_usr:
  1298.       move.l    usp,a1            ; user mode: args on user stack
  1299. diff -cr mint.org/xbios.c mint.110/xbios.c
  1300. *** mint.org/xbios.c    Thu Sep  9 02:02:36 1993
  1301. --- mint.110/xbios.c    Thu Feb 24 09:21:42 1994
  1302. ***************
  1303. *** 264,269 ****
  1304. --- 264,271 ----
  1305.   dosound(ptr)
  1306.       const char *ptr;
  1307.   {
  1308. + #ifndef ONLY000
  1309.       MEMREGION *r;
  1310.   
  1311.       if (!no_mem_prot && ((long)ptr >= 0)) {
  1312. ***************
  1313. *** 286,292 ****
  1314.               mark_region(r, PROT_S);
  1315.           }
  1316.       }
  1317.       return call_dosound(ptr);
  1318.   }
  1319.   
  1320. --- 288,294 ----
  1321.               mark_region(r, PROT_S);
  1322.           }
  1323.       }
  1324. ! #endif
  1325.       return call_dosound(ptr);
  1326.   }
  1327.   
  1328.  
  1329.